package com.example.library_common.utils

import android.content.Context
import android.media.AudioAttributes
import android.media.AudioManager
import android.media.SoundPool
import com.example.library_common.global.AppGlobals

/**
 * FileName: SoundPoolHelper
 * Founder: LiuGuiLin
 * Profile: 播放铃声
 */
object SoundPoolHelper {

//    private lateinit var mContext: Context
    private lateinit var mSoundPool: SoundPool

    fun init(mContext: Context) {
//        this.mContext = mContext

        mSoundPool = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            SoundPool.Builder().setMaxStreams(1)
                .setAudioAttributes(
                    AudioAttributes.Builder()
                        .setLegacyStreamType(AudioManager.STREAM_ALARM)
//                        .setFlags()
                        .build()
                )
                .build()
        }else{
            SoundPool(1, AudioManager.STREAM_ALARM, 5)
        }
    }

    /**
     * 播放
     */
    fun play(resId: Int) {
        val mContext = AppGlobals.getApplication()
        val poolId = mSoundPool.load(mContext, resId, 1)
        mSoundPool.setOnLoadCompleteListener { _, _, status ->
            if (status == 0) {
                /**
                 * 第一个参数：ID
                 * 第二个参数：左音量 0.0 - 1.0
                 * 第三个参数：右音量 0.0 - 1.0
                 * 第四个参数：优先级
                 * 第五个参数：重复数
                 * 第六个参数：速率 0.5 - 2.0
                 */
                mSoundPool.play(poolId, 1f, 1f, 1, 0, 1f)
            }
        }
    }
}